<?php

class search_documentoModel extends Model{
    
    /*
     * NUNCA, JAMAIS coloque nenhum destes campos com a ppção search, pois vai 
     * entrar em loop infinito e correrá o risco de encher o banco de dados
     */
    
    protected $disabled_index = true;
    protected $tabela = "search_documento";
    protected $pkey   = "cod_documento";
    protected $dados = array(
        
        'cod_documento' => array(
            'name'    => "Código",
            'pkey'    => true,
            'type'    => 'int',
            'grid'    => true,
            'notnull' => true,
            'ai'      => true
         ),
        
        'model' => array(
            'name'    => "Documento",
            'type'    => 'varchar',
            'size'    => '32',
            'notnull' => true
         ),
        
        'link' => array(
            'name'    => "Link",
            'type'    => 'varchar',
            'size'    => '128',
            'unique'  => true,
            'notnull' => true
         )
    );
    
    public function search($palavras, $model = ""){
        $this->LoadModel('search/alg', 'alg');
        $this->LoadClassFromPlugin('search/alg/StemmingAlgorithm', 'salg');
        $texto = str_replace(array("\n", "\t", "-"), ' ', $palavras);
        $texto = explode(" ", $texto);
        $words = array();
        foreach($texto as $txt){
            $txt = GetPlainName($txt, true, false);
            if($this->alg->ignoreWord($txt)) continue;
            if(strlen($txt) < 2) continue;
            $word = $this->salg->stem($txt);
            if(array_key_exists($word, $words)) continue;
            $words[$word] = $word;
        }
        
        $where = ($model == "")?"":"WHERE model = '$model'";
        $N = $this->db->ExecuteQuery("SELECT COUNT(*) as total FROM $this->tabela $where");
        
        $lista = implode("','", $words);
        echo "'$lista'";
        /*
        SELECT LN($N/count(*)) as ti, cod_documento, repeticoes, palavra
FROM search_dicionario
NATURAL JOIN search_palavra
WHERE palavra IN ('sol','nebulos','nociva','saúde')
GROUP BY cod_documento, cod_palavra
ORDER BY ti DESC, repeticoes DESC*/
    }
    
    public function indexar_documento($texto, $model, $link){
        $var = $this->selecionar(array(), "link = '$link'");
        if(empty($var)){
            $dados['model'] = $model;
            $dados['link']  = $link;
            if(!$this->inserir($dados)) return false;
            $cod_documento = $this->getLastId();
        }else $cod_documento = $var[0]['cod_documento'];
        
        $this->LoadModel('search/dicionario', 'dic');
        $this->dic->indexar_palavras($cod_documento, $texto);
    }
    
}

?>